// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

part of dart.core;

/**
 * 保留字[:true:]和[:false:]表示该类唯一的实例化对象。
 *
 * 当试图继承或实现bool类的时候，会产生一个编译时错误。
 */
class bool {
  /**
   * 返回名称为[name]的环境变量的布尔值。
   *
   * 如果声明的值是字符串`"true"`，那么声明的布尔值为`true`，
   * 如果字符串是`"false"`则值为`false`。
   *
   * 其他所有情况，包括`name`未声明时，结果为[defaultValue]。
   *
   * 结果与下面表达式的返回值相同：
   *
   *     (const String.fromEnvironment(name) == "true")
   *         ? true
   *         : (const String.fromEnvironment(name) == "false")
   *             ? false
   *             : defaultValue
   *
   * 例子:
   *
   *     const loggingFlag = const bool.fromEnvironment("logging");
   *
   * 如果你想使用一个形象、真实的字符串表示值，而不是`"true"`，可以直接使用
   * [String.fromEnvironment]构造函数：
   *
   *     const isLoggingOn = (const String.fromEnvironment("logging") == "on");
   */
  external const factory bool.fromEnvironment(String name,
                                              {bool defaultValue: false});

  /**
   * 如果值为[:true:]，则返回字符串[:"true":]；如果是[:false:]，则返回字符串[:"false":]。
   */
  String toString() {
    return this ? "true" : "false";
  }
}
